
const Role = require('./models.js')
const Util = require('../utils/util.js')

module.exports = {
  /**
   * 创建一个角色
   * @param {*} req 
   * @param {*} res 
   * @param {*} next 
   */
    async createRole(req, res, next) {
        // 校验传入的参数
        let fields = req.body;
        // try {
        //   // let validateResult = checkCreateUserFields(fields, req)
        //   // if (!validateResult) {
        //   //   return res.status(500).send(Util.renderApiErr(req, res, 500, '数据校验失败'))
        //   // }
        // } catch (err) {
        //   return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        // }

        const obj = {
          rolename: fields.rolename,
          rolecode: fields.rolecode || '',
          description: fields.description || '',
          menu: fields.menu || [],
          group: fields.group || '',
          enable: fields.enable ? true : false
        }

        const newRole = new Role(obj)

        try {
          let _roleCode = await Role.findOne({ rolecode: obj.rolecode }, {group: obj.group})
          if (_roleCode) {
            return res.status(500).send(Util.renderApiErr(req, res, 500, '角色编码已被占用'))
          }

          let cateObj = await newRole.save()
          // 更新sortPath defaultUrl
          return res.send(Util.renderApiData(req, res, 200, '组织新增成功', { id: cateObj._id }))
        } catch (err) {
          return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        }

    },

    /**
   * 获取角色列表
   * @param {*} req 
   * @param {*} res 
   * @param {*} next 
   */
    async getRoleList(req, res, next) {
        try {
          // log(req.query)
          let fields = req.query
          let queryObj = {}, sortObj = { create_time: -1 };
          let ref = fields.ref
          let group = fields.group || '';

          if (group) {
            queryObj.group = group
          }

          // // 排序
          // if (sortBy) {
          //   delete sortObj.create_time
          //   sortObj[sortBy] = -1
          // }

          // 查询文档
          // ref 关联表查询
          // ref:{
          //   path:'menu'
          // }
          if(ref === 'all'){
            ref = [
              {
                path:'menu'
              }
            ]
          }
          const roleList = await Role.find(queryObj).sort(sortObj).populate(ref).exec()

          // log(roleList)

          let RoleObj = {
            list: roleList
          }
          return res.send(Util.renderApiData(req, res, 200, '角色列表获取成功', RoleObj))
        } catch (err) {
          return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        }
    },
}